目录
[toc]
基本的遍历方式
前序遍历:总是先访问根节点,再左子树,最后右子树
中序遍历:总是先访问左子树,再根节点,最后右子树
后序遍历:总是先访问左子树,再右子树,最后根节点
注:递归方式代码非常容易
94 二叉树的中序遍历(144,145)(回到目录)
递归方法1
递归方法2
迭代方法
144 二叉树的前序遍历
题目描述提示帮助提交记录社区讨论阅读解答
给定一个二叉树,返回它的 前序 遍历。
示例:
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
递归方法
迭代方法
145 二叉树的后序遍历
递归方法
递归1
递归2
迭代法
广度优先搜索
102 二叉树的层次遍历
非递归
分析:先建立一个queue,然后先把根节点放进去,这时候找根节点的左右两个子节点,这时候去掉根节点,此时queue里的元素就是下一层的所有节点,用一个for循环遍历它们,然后存到一个一维向量里,遍历完之后再把这个一维向量存到二维向量里,以此类推,可以完成层序遍历。代码如下:
|
|
递归做法
构造二叉树
例如105,106都是这类问题
二叉树的平衡
108 将有序数组转换为二叉搜索树(回到目录)
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
示例:
给定有序数组: [-10,-3,0,5,9],
一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:
代码
109 有序链表转换二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
使用了递归,和那个24题差不多,关键是如何找到链表的中间位置。
110 平衡二叉树(回到目录)
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
示例 1:
示例 2:
代码